home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / role / SRunMatGen.lha / IO.c < prev    next >
C/C++ Source or Header  |  1994-06-26  |  30KB  |  850 lines

  1. /*********************************/
  2. /* MatrixGenerator für ShadowRun */
  3. /* written by Thomas Reinhardt   */
  4. /*                               */
  5. /* Input- und Output-Funktionen  */
  6. /*********************************/
  7. #include <time.h>
  8. #include <math.h>
  9. #include <string.h>
  10. #include <exec/interrupts.h>
  11. #include <exec/libraries.h>
  12. #include <exec/lists.h>
  13. #include <exec/memory.h>
  14. #include <exec/nodes.h>
  15. #include <exec/ports.h>
  16. #include <exec/types.h>
  17. #include <intuition/intuition.h>
  18. #include <libraries/dos.h>
  19. #include <libraries/dosextens.h>
  20. #include <proto/dos.h>
  21. #include <proto/exec.h>
  22. #include <proto/graphics.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/diskfont.h>
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28.  
  29. #include "MatrixGen.h"
  30. #include "all.h"
  31.  
  32. extern LONG SaveNamePointer;
  33. extern struct IntuitionBase *IntuitionBase;
  34. extern struct GfxBase *GfxBase;
  35. extern struct Library *DosBase;
  36. extern struct NewScreen MyNewScreen;
  37. extern struct Screen *MyScreen;
  38. extern struct BitMapHeader BMHD;
  39. extern struct ColorRegister Colors[16];
  40. extern struct CommodoreAmiga CAMG;
  41. extern LONG Len,xi,yi,b;
  42. extern ULONG ChunkLen;
  43. extern char *WohinDamit;
  44. extern char GfxName[255];
  45. extern char StatusName[255];
  46. extern char StandardName[255];
  47. extern char TextName[255];
  48. extern char DatenFeld[255];
  49. extern BOOL success,AllDone;
  50. extern int i;
  51. extern char inread[5];
  52. extern int cBitmaps,AnzahlKnoten,AusgangsKnoten,AnzahlWichtigeDaten,Stufenwert;
  53. extern int MaxSAN,AusgangsWichtigeDaten;
  54. extern UBYTE xPos,yPos,MaxFarben,Language,OutputType;
  55. extern struct MatrixKomponenten Matrix[12*12];
  56. extern struct MatrixGenType MatrixDatas[1];
  57. extern BOOL CPUInSystem,Beenden,RandomDSValue,CheckLevelCode;
  58. extern BOOL Zufallsstufen,KeineDatenspeicher,StatusFile,PrefsFile,BlaueKnoten;
  59. extern BOOL Schatten,SaveDatenfeld,InstallNoIC,AlwaysICInfo,AlwaysICDS;
  60. extern UBYTE AnzahlCPU,AnzahlSPU,AnzahlDS,AnzahlSAN,AnzahlSN,AnzahlIOP,Anzahl,AnzahlBlueNodes;
  61.  
  62. BOOL SaveText(){
  63. LONG OutTextPointer;
  64. char ZWSPName[255];
  65. char InputName[255];
  66. char SrcDat[255];
  67. int i,xx,yy;
  68. BOOL STAT,NOSPACE,HereIsAIC,HereIsWDIC;
  69. FILE *InTextPointer;
  70. UBYTE EOLine[1];
  71. char *PreString[13]={"Error!-","blue-","Blau-","green-","Grün-","orange-","Orange-","red-","Rot-","purple-","Purpur-","black-","Schwarz-"};
  72. char *IceTypeString[22]={"nothing","nichts","Trapped-","Falle-","Access-","Zugang-","Barrier-","Barriere-","Scramble-","Wirbel-","Blaster-","Blaster-","Trace-","Aufspüren-","Killer-","Killer-","Tar Baby-","Teerbaby-","Tar Pit-","Teergrube","Deadly ","tödliches "};
  73. char *IceStufeString[8]={" ","white","weißes","gray","graues","black","schwarzes"};
  74. char *DataString[5]={" ","nothing of interest","keine besonderen Daten","important datas","wichtige Daten"};
  75. char *StufeString[2]={"rating","Stufe"};
  76.     EOLine[0]=10;
  77.     strcpy(TextName,StandardName);
  78.     if(OutputType==0){
  79.         strcat(TextName,".DOC");
  80.         strcpy(SrcDat,"ASC-");
  81.         }
  82.     if(OutputType==1){
  83.         strcat(TextName,".tex");
  84.         strcpy(SrcDat,"TeX-");
  85.         }
  86.     OutTextPointer=Open(TextName,MODE_NEWFILE);
  87.     if(!OutTextPointer){
  88.         DisplayErrorMessage("Error : Save(Text)-Datei!");
  89.         }
  90.     else{
  91.         strcpy(InputName,SrcDat);
  92.         strcat(InputName,"ALL.e");
  93.         if(Language==1){
  94.             strcpy(InputName,SrcDat);
  95.             strcat(InputName,"ALL.g");
  96.             }
  97.         InTextPointer=fopen(InputName,"r");
  98.         if(!InTextPointer){
  99.             sprintf(ZWSPName,"Can´t find %sALL.(l)-Datei ... terminating",SrcDat);
  100.             Close(OutTextPointer);
  101.             DisplayErrorMessage("Error : can´t find ALL.(l)-Datei!");
  102.             }
  103.         STAT=FALSE;
  104.         i=0;
  105.         while(STAT==FALSE){
  106.           fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  107.             if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  108.             if((strncmp(&ZWSPName[0],"[TOT]",5))==0) sprintf(ZWSPName,"%i",AusgangsKnoten);
  109.             if((strncmp(&ZWSPName[0],"[CPU]",5))==0) sprintf(ZWSPName,"%i CPU",AnzahlCPU);
  110.             if((strncmp(&ZWSPName[0],"[SPU]",5))==0) sprintf(ZWSPName,"%i SPU",AnzahlSPU);
  111.             if((strncmp(&ZWSPName[0],"[IOP]",5))==0) sprintf(ZWSPName,"%i IOP",AnzahlIOP);
  112.             if((strncmp(&ZWSPName[0],"[DS1]",5))==0) sprintf(ZWSPName,"%i DS",AnzahlDS);
  113.             if((strncmp(&ZWSPName[0],"[SAN]",5))==0) sprintf(ZWSPName,"%i SAN",AnzahlSAN);
  114.             if((strncmp(&ZWSPName[0],"[SN1]",5))==0) sprintf(ZWSPName,"%i SN",AnzahlSN);
  115.             if((strncmp(&ZWSPName[0],"[DSN]",5))==0) sprintf(ZWSPName,"%i",CountMoneyDS());
  116.             if(STAT==FALSE){
  117.                 if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  118.                 else{
  119.                     Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  120.                     Write(OutTextPointer," ",1);
  121.                     }
  122.                 }
  123.             }
  124.         Write(OutTextPointer,&EOLine[0],1);
  125.         fclose(InTextPointer);
  126.         for(i=1;i<AnzahlCPU+1;i++){
  127.             strcpy(InputName,SrcDat);
  128.             strcat(InputName,"CPU.e");
  129.             if(Language==1){
  130.                 strcpy(InputName,SrcDat);
  131.                 strcat(InputName,"CPU.g");
  132.                 }
  133.             InTextPointer=fopen(InputName,"r");
  134.             if(!InTextPointer){
  135.                 sprintf(ZWSPName,"Can´t find %sCPU.(l)-Datei ... terminating",SrcDat);
  136.                 Close(OutTextPointer);
  137.                 DisplayErrorMessage("Error : can´t find CPU-Datei!");
  138.                 }
  139.             STAT=FALSE;
  140.             HereIsAIC=FALSE;
  141.             NOSPACE=FALSE;
  142.             while(STAT==FALSE){
  143.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  144.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,1));
  145.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  146.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  147.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  148.                     NOSPACE=TRUE;
  149.                     sprintf(ZWSPName,PreString[GetTypeName(i,1)]);
  150.                     }
  151.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  152.                     NOSPACE=TRUE;
  153.                     if(GetIceName(i,1)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,1)]);
  154.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,1)]);
  155.                     HereIsAIC=TRUE;
  156.                     }
  157.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  158.                     if(GetIceNameType(i,1)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,1)]);
  159.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,1)]);
  160.                     HereIsAIC=FALSE;
  161.                     }
  162.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  163.                     if(GetIceStufe(i,1)==0) sprintf(ZWSPName," ");
  164.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,1));
  165.                     }
  166.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  167.                     if(GetIceNameType(i,1)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,1)]);
  168.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,1)]);
  169.                     HereIsAIC=FALSE;
  170.                     }
  171.                 if(STAT==FALSE){
  172.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  173.                     else{
  174.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  175.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  176.                         NOSPACE=FALSE;
  177.                         }
  178.                     }
  179.                 }
  180.             fclose(InTextPointer);
  181.             }
  182.         for(i=1;i<AnzahlSPU+1;i++){
  183.             strcpy(InputName,SrcDat);
  184.             strcat(InputName,"SPU.e");
  185.             if(Language==1){
  186.                 strcpy(InputName,SrcDat);
  187.                 strcat(InputName,"SPU.g");
  188.                 }
  189.             InTextPointer=fopen(InputName,"r");
  190.             if(!InTextPointer){
  191.                 sprintf(ZWSPName,"Can´t find %sSPU.(l)-Datei ... terminating",SrcDat);
  192.                 Close(OutTextPointer);
  193.                 DisplayErrorMessage("Error : can´t find -SPU.-Datei!");
  194.                 }
  195.             STAT=FALSE;
  196.             HereIsAIC=FALSE;
  197.             NOSPACE=FALSE;
  198.             while(STAT==FALSE){
  199.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  200.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,2));
  201.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  202.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  203.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  204.                     NOSPACE=TRUE;
  205.                     sprintf(ZWSPName,PreString[GetTypeName(i,2)]);
  206.                     }
  207.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  208.                     NOSPACE=TRUE;
  209.                     if(GetIceName(i,2)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,2)]);
  210.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,2)]);
  211.                     HereIsAIC=TRUE;
  212.                     }
  213.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  214.                     if(GetIceNameType(i,2)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,2)]);
  215.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,2)]);
  216.                     HereIsAIC=FALSE;
  217.                     }
  218.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  219.                     if(GetIceStufe(i,2)==0) sprintf(ZWSPName," ");
  220.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,2));
  221.                     }
  222.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  223.                     if(GetIceNameType(i,2)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,2)]);
  224.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,2)]);
  225.                     HereIsAIC=FALSE;
  226.                     }
  227.                 if(STAT==FALSE){
  228.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  229.                     else{
  230.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  231.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  232.                         NOSPACE=FALSE;
  233.                         }
  234.                     }
  235.                 }
  236.             fclose(InTextPointer);
  237.             }
  238.         for(i=1;i<AnzahlIOP+1;i++){
  239.             strcpy(InputName,SrcDat);
  240.             strcat(InputName,"IOP.e");
  241.             if(Language==1){
  242.                 strcpy(InputName,SrcDat);
  243.                 strcat(InputName,"IOP.g");
  244.                 }
  245.             InTextPointer=fopen(InputName,"r");
  246.             if(!InTextPointer){
  247.                 sprintf(ZWSPName,"Can´t find %sIOP.(l)-Datei ... terminating",SrcDat);
  248.                 Close(OutTextPointer);
  249.                 DisplayErrorMessage("Error : can´t find IOP.(l)-Datei!");
  250.                 }
  251.             STAT=FALSE;
  252.             HereIsAIC=FALSE;
  253.             NOSPACE=FALSE;
  254.             while(STAT==FALSE){
  255.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  256.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,3));
  257.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  258.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  259.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  260.                     NOSPACE=TRUE;
  261.                     sprintf(ZWSPName,PreString[GetTypeName(i,3)]);
  262.                     }
  263.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  264.                     NOSPACE=TRUE;
  265.                     if(GetIceName(i,3)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,3)]);
  266.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,3)]);
  267.                     HereIsAIC=TRUE;
  268.                     }
  269.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  270.                     if(GetIceNameType(i,3)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,3)]);
  271.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,3)]);
  272.                     HereIsAIC=FALSE;
  273.                     }
  274.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  275.                     if(GetIceStufe(i,3)==0) sprintf(ZWSPName," ");
  276.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,3));
  277.                     }
  278.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  279.                     if(GetIceNameType(i,3)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,3)]);
  280.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,3)]);
  281.                     HereIsAIC=FALSE;
  282.                     }
  283.                 if(STAT==FALSE){
  284.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  285.                     else{
  286.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  287.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  288.                         NOSPACE=FALSE;
  289.                         }
  290.                     }
  291.                 }
  292.             fclose(InTextPointer);
  293.             }
  294.         for(i=1;i<AnzahlSAN+1;i++){
  295.             strcpy(InputName,SrcDat);
  296.             strcat(InputName,"SAN.e");
  297.             if(Language==1){
  298.                 strcpy(InputName,SrcDat);
  299.                 strcat(InputName,"SAN.g");
  300.                 }
  301.             InTextPointer=fopen(InputName,"r");
  302.             if(!InTextPointer){
  303.                 sprintf(ZWSPName,"Can´t find %sSAN.(l)-Datei ... terminating",SrcDat);
  304.                 Close(OutTextPointer);
  305.                 DisplayErrorMessage("Error : can´t find SAN.(l)-Datei!");
  306.                 }
  307.             HereIsAIC=FALSE;
  308.             STAT=FALSE;
  309.             NOSPACE=FALSE;
  310.             while(STAT==FALSE){
  311.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  312.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,5));
  313.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  314.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  315.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  316.                     NOSPACE=TRUE;
  317.                     sprintf(ZWSPName,PreString[GetTypeName(i,5)]);
  318.                     }
  319.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  320.                     NOSPACE=TRUE;
  321.                     if(GetIceName(i,5)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,5)]);
  322.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,5)]);
  323.                     HereIsAIC=TRUE;
  324.                     }
  325.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  326.                     if(GetIceNameType(i,5)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,5)]);
  327.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,5)]);
  328.                     HereIsAIC=FALSE;
  329.                     }
  330.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  331.                     if(GetIceStufe(i,5)==0) sprintf(ZWSPName," ");
  332.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,5));
  333.                     }
  334.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  335.                     if(GetIceNameType(i,5)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,5)]);
  336.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,5)]);
  337.                     HereIsAIC=FALSE;
  338.                     }
  339.                 if(STAT==FALSE){
  340.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  341.                     else{
  342.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  343.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  344.                         NOSPACE=FALSE;
  345.                         }
  346.                     }
  347.                 }
  348.             fclose(InTextPointer);
  349.             }
  350.         for(i=1;i<AnzahlSN+1;i++){
  351.             strcpy(InputName,SrcDat);
  352.             strcat(InputName,"SN.e");
  353.             if(Language==1){
  354.                 strcpy(InputName,SrcDat);
  355.                 strcat(InputName,"SN.g");
  356.                 }
  357.             InTextPointer=fopen(InputName,"r");
  358.             if(!InTextPointer){
  359.                 sprintf(ZWSPName,"Can´t find %sSN.(l)-Datei ... terminating",SrcDat);
  360.                 Close(OutTextPointer);
  361.                 DisplayErrorMessage("Error : can´t find SN.(l)-Datei!");
  362.                 }
  363.             NOSPACE=FALSE;
  364.             HereIsAIC=FALSE;
  365.             STAT=FALSE;
  366.             while(STAT==FALSE){
  367.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  368.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,6));
  369.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  370.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  371.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  372.                     NOSPACE=TRUE;
  373.                     sprintf(ZWSPName,PreString[GetTypeName(i,6)]);
  374.                     }
  375.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  376.                     NOSPACE=TRUE;
  377.                     if(GetIceName(i,6)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,6)]);
  378.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,6)]);
  379.                     HereIsAIC=TRUE;
  380.                     }
  381.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  382.                     if(GetIceNameType(i,6)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,6)]);
  383.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,6)]);
  384.                     HereIsAIC=FALSE;
  385.                     }
  386.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  387.                     if(GetIceStufe(i,6)==0) sprintf(ZWSPName," ");
  388.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,6));
  389.                     }
  390.                 if(STAT==FALSE){
  391.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  392.                     else{
  393.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  394.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  395.                         NOSPACE=FALSE;
  396.                         }
  397.                     }
  398.                 }
  399.             fclose(InTextPointer);
  400.             }
  401.         for(i=1;i<AnzahlDS+1;i++){
  402.             strcpy(InputName,SrcDat);
  403.             strcat(InputName,"DS.e");
  404.             if(Language==1){
  405.                 strcpy(InputName,SrcDat);
  406.                 strcat(InputName,"DS.g");
  407.                 }
  408.             InTextPointer=fopen(InputName,"r");
  409.             if(!InTextPointer){
  410.                 sprintf(ZWSPName,"Can´t find %sDS.(l)-Datei ... terminating",SrcDat);
  411.                 Close(OutTextPointer);
  412.                 DisplayErrorMessage("Error : can´t find DS.(l)-Datei!");
  413.                 }
  414.             HereIsAIC=FALSE;
  415.             STAT=FALSE;
  416.             NOSPACE=FALSE;
  417.             while(STAT==FALSE){
  418.               fscanf(InTextPointer,"%s\n",&ZWSPName[0]);
  419.                 if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  420.                 if((strncmp(&ZWSPName[0],"[NUM]",5))==0) sprintf(ZWSPName,"%i",i);
  421.                 if((strncmp(&ZWSPName[0],"[STF]",5))==0) sprintf(ZWSPName,"%i",GetStufe(i,4));
  422.                 if((strncmp(&ZWSPName[0],"[DFV]",5))==0) sprintf(ZWSPName,"%i",GetDatenWert(i,4));
  423.                 if((strncmp(&ZWSPName[0],"[DFS]",5))==0) sprintf(ZWSPName,"%i",GetDatenSize(i,4));
  424.                 if((strncmp(&ZWSPName[0],"[TYP]",5))==0){
  425.                     NOSPACE=TRUE;
  426.                     sprintf(ZWSPName,PreString[GetTypeName(i,4)]);
  427.                     }
  428.                 if((strncmp(&ZWSPName[0],"[IDT]",5))==0){
  429.                     sprintf(ZWSPName,DataString[GetDataInfoWert(i,4)]);
  430.                     }
  431.                 if((strncmp(&ZWSPName[0],"[ICT]",5))==0){
  432.                     NOSPACE=TRUE;
  433.                     if(GetIceName(i,4)<1) sprintf(ZWSPName,"%s",IceTypeString[GetIceName(i,4)]);
  434.                     else sprintf(ZWSPName,"%sIC (",IceTypeString[GetIceName(i,4)]);
  435.                     HereIsAIC=TRUE;
  436.                     }
  437.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICA]",5))==0)){
  438.                     if(GetIceNameType(i,4)<1) sprintf(ZWSPName,"%s",IceStufeString[GetIceNameType(i,4)]);
  439.                     else sprintf(ZWSPName,"%s IC)",IceStufeString[GetIceNameType(i,4)]);
  440.                     HereIsAIC=FALSE;
  441.                     }
  442.                 if((HereIsAIC==TRUE)&&((strncmp(&ZWSPName[0],"[ICS]",5))==0)){
  443.                     if(GetIceStufe(i,4)==0) sprintf(ZWSPName," ");
  444.                     else sprintf(ZWSPName,"%s %i,",StufeString[Language],GetIceStufe(i,4));
  445.                     }
  446.                 if((strncmp(&ZWSPName[0],"[WDT]",5))==0){
  447.                     NOSPACE=TRUE;
  448.                     if(GetWD(i,4)==TRUE){
  449.                         sprintf(ZWSPName,"%sIC (",IceTypeString[8+Language]);
  450.                         }
  451.                     else sprintf(ZWSPName,"nothing");
  452.                     HereIsWDIC=TRUE;
  453.                     }
  454.                 if((HereIsWDIC==TRUE)&&((strncmp(&ZWSPName[0],"[WDA]",5))==0)){
  455.                     if(GetWD(i,4)==TRUE){
  456.                         sprintf(ZWSPName,"%s IC)",IceStufeString[1+Language]);
  457.                         HereIsWDIC=FALSE;
  458.                         }
  459.                     else sprintf(ZWSPName," ");
  460.                     }
  461.                 if((HereIsWDIC==TRUE)&&((strncmp(&ZWSPName[0],"[WDS]",5))==0)){
  462.                     if(GetWD(i,4)==TRUE){
  463.                         sprintf(ZWSPName,"%s %i,",StufeString[Language],GetWDIceStufe(i,4));
  464.                         }
  465.                     else sprintf(ZWSPName," ");
  466.                     }
  467.                 if((strncmp(&ZWSPName[0],"[MON]",5))==0){
  468.                     for(yy=0;yy<12;yy++){
  469.                         for(xx=0;xx<12;xx++){
  470.                             if((Matrix[xx+12*yy].Nummer==i)&&(Matrix[xx+12*yy].Type==4)){
  471.                                 sprintf(ZWSPName,"%i",Matrix[xx+12*yy].Datenwert*Matrix[xx+12*yy].Datensize);
  472.                                 }
  473.                             }
  474.                         }
  475.                     }
  476.                 if(STAT==FALSE){
  477.                     if((ZWSPName[0]==0x5c)&&(ZWSPName[1]==0x6e)) Write(OutTextPointer,&EOLine[0],1);
  478.                     else{
  479.                         Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  480.                         if(NOSPACE==FALSE) Write(OutTextPointer," ",1);
  481.                         NOSPACE=FALSE;
  482.                         }
  483.                     }
  484.                 }
  485.             fclose(InTextPointer);
  486.             }
  487.         if(OutputType==1){
  488.             ZWSPName[0]=0x5c;
  489.             Write(OutTextPointer,&ZWSPName[0],1);
  490.             sprintf(ZWSPName,"end{document}");
  491.             Write(OutTextPointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  492.             Write(OutTextPointer,&EOLine[0],1);
  493.             }
  494.         Close(OutTextPointer);
  495.         }
  496.     return TRUE;
  497.     }
  498.  
  499. void StatusAusgabe(char *StatName){
  500. LONG StatusFilePointer;
  501. char ZWSPName[255];
  502.     CountNodes();
  503.     CountBlueDS();
  504.     if(StatusFile==TRUE){
  505.         StatusFilePointer=Open(StatName,MODE_NEWFILE);
  506.         if(!StatusFilePointer){
  507.             DisplayErrorMessage("Fehler : Save-Datei nicht anlegbar!");
  508.             }
  509.         else{
  510.             sprintf(ZWSPName,"Status\n");
  511.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  512.             sprintf(ZWSPName,"\n");
  513.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  514.             sprintf(ZWSPName,"Number Of CPU : %3i\n",AnzahlCPU);
  515.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  516.             sprintf(ZWSPName,"Number Of SPU : %3i\n",AnzahlSPU);
  517.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  518.             sprintf(ZWSPName,"Number Of IOP : %3i\n",AnzahlIOP);
  519.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  520.             sprintf(ZWSPName,"Number Of DS  : %3i\n",AnzahlDS);
  521.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  522.             sprintf(ZWSPName,"     Blue DS  :(%3i)\n",AnzahlDS);
  523.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  524.             sprintf(ZWSPName,"Number Of SAN : %3i\n",AnzahlSAN);
  525.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  526.             sprintf(ZWSPName,"Number Of SN  : %3i\n",AnzahlSN);
  527.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  528.             sprintf(ZWSPName,"                ---\n");
  529.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  530.             sprintf(ZWSPName,"Number Of :   : %3i\n",AusgangsKnoten);
  531.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  532.             sprintf(ZWSPName,"\n");
  533.             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  534.             for(yi=0;yi<12;yi++){
  535.                 for(xi=0;xi<12;xi++){
  536.                     if(Matrix[xi+12*yi].Type==4){
  537.                         sprintf(ZWSPName,"Pos(%2i,%2i) Wert:%6i Größe:%3i ",xi,yi,Matrix[xi+12*yi].Datenwert,Matrix[xi+12*yi].Datensize);
  538.                         Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  539.                         if(Matrix[xi+12*yi].WichtigeDaten==TRUE){
  540.                             sprintf(ZWSPName,"! important data !");
  541.                             Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  542.                             }
  543.                         sprintf(ZWSPName,"\n");
  544.                         Write(StatusFilePointer,&ZWSPName[0],strlen(&ZWSPName[0]));
  545.                         }
  546.                     }
  547.                 }
  548.             Close(StatusFilePointer);
  549.             }
  550.         }
  551.     else{
  552.         printf("Status\n");
  553.         printf("\n");
  554.         printf("Number Of CPU : %3i\n",AnzahlCPU);
  555.         printf("Number Of SPU : %3i\n",AnzahlSPU);
  556.         printf("Number Of IOP : %3i\n",AnzahlIOP);
  557.         printf("Number Of DS  : %3i\n",AnzahlDS);
  558.         printf("     Blue DS  :(%3i)\n",AnzahlBlueNodes);
  559.         printf("Number Of SAN : %3i\n",AnzahlSAN);
  560.         printf("Number Of SN  : %3i\n",AnzahlSN);
  561.         printf("                ---\n");
  562.         printf("Number Of :   : %3i\n",AusgangsKnoten);
  563.         printf("\n");
  564.         for(yi=0;yi<12;yi++){
  565.             for(xi=0;xi<12;xi++){
  566.                 if(Matrix[xi+12*yi].Type==4){
  567.                     printf("Pos(%2i,%2i) Wert:%6i Größe:%3i ",xi,yi,Matrix[xi+12*yi].Datenwert,Matrix[xi+12*yi].Datensize);
  568.                     if(Matrix[xi+12*yi].WichtigeDaten==TRUE){
  569.                         printf("! important data !");
  570.                         }
  571.                     printf("\n");
  572.                     }
  573.                 }
  574.             }
  575.         }
  576.     }
  577.  
  578. void ScanPrefs(){
  579. FILE *StatusFilePointer;
  580. char ZWSPName[255];
  581. BOOL STAT;
  582.     if(PrefsFile==TRUE){
  583.         StatusFilePointer=fopen("MatrixGen.pre","r");
  584.         if(!StatusFilePointer){
  585.             printf("\n");
  586.             printf("Prefs-File Not Found! ... Using Standard-Prefs\n");
  587.             printf("\n");
  588.             }
  589.         else{
  590.             STAT=FALSE;
  591.           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  592.             if((strncmp(&ZWSPName[0],"*Header*",8))==0){
  593.                 while(STAT==FALSE){
  594.                   fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  595.                     if((strncmp(&ZWSPName[0],"[END]",5))==0) STAT=TRUE;
  596.                     if(STAT==FALSE){
  597.                         if((strncmp(&ZWSPName[0],"NODES",5))==0){
  598.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  599.                             stcd_i(&ZWSPName[0],&AnzahlKnoten);
  600.                             }
  601.                         if((strncmp(&ZWSPName[0],"BLUENODES",9))==0){
  602.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  603.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  604.                                 BlaueKnoten=TRUE;
  605.                                 }
  606.                             }
  607.                         if((strncmp(&ZWSPName[0],"STATUSFILE",10))==0){
  608.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  609.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  610.                                 StatusFile=TRUE;
  611.                                 }
  612.                             }
  613.                             }
  614.                         if((strncmp(&ZWSPName[0],"GERMAN",6))==0){
  615.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  616.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  617.                                 MaxFarben=7;
  618.                                 }
  619.                             }
  620.                         if((strncmp(&ZWSPName[0],"CHECKDL",7))==0){
  621.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  622.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  623.                                 CheckLevelCode=TRUE;
  624.                                 }
  625.                             }
  626.                         if((strncmp(&ZWSPName[0],"SHADOW",6))==0){
  627.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  628.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  629.                                 Schatten=TRUE;
  630.                                 }
  631.                             }
  632.                         if((strncmp(&ZWSPName[0],"ALWAYSIC",6))==0){
  633.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  634.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  635.                                 AlwaysICInfo=TRUE;
  636.                                 }
  637.                             }
  638.                         if((strncmp(&ZWSPName[0],"ALWAYSDS",6))==0){
  639.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  640.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  641.                                 AlwaysICDS=TRUE;
  642.                                 }
  643.                             }
  644.                         if((strncmp(&ZWSPName[0],"IMPORTANT",9))==0){
  645.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  646.                             stcd_i(&ZWSPName[0],&AnzahlWichtigeDaten);
  647.                             }
  648.                         if((strncmp(&ZWSPName[0],"LANGUAGE",8))==0){
  649.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  650.                             if((strncmp(&ZWSPName[0],"ENGLISH",7))==0){
  651.                                 Language=0;
  652.                                 }
  653.                             if((strncmp(&ZWSPName[0],"DEUTSCH",7))==0){
  654.                                 Language=1;
  655.                                 }
  656.                             }
  657.                         if((strncmp(&ZWSPName[0],"MAXSAN",6))==0){
  658.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  659.                             stcd_i(&ZWSPName[0],&MaxSAN);
  660.                             MaxSAN++;
  661.                             }
  662.                         if((strncmp(&ZWSPName[0],"NOMONEY",7))==0){
  663.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  664.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  665.                                 KeineDatenspeicher=TRUE;
  666.                                 }
  667.                             }
  668.                         if((strncmp(&ZWSPName[0],"STANDARDUSE",11))==0){
  669.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  670.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  671.                                 Zufallsstufen=FALSE;
  672.                                 }
  673.                             }
  674.                         if((strncmp(&ZWSPName[0],"NOIC",4))==0){
  675.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  676.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  677.                                 InstallNoIC=TRUE;
  678.                                 }
  679.                             }
  680.                         if((strncmp(&ZWSPName[0],"STANDARDLEVEL",13))==0){
  681.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  682.                             stcd_i(&ZWSPName[0],&Stufenwert);
  683.                             }
  684.                         if((strncmp(&ZWSPName[0],"STANDARDFILE",12))==0){
  685.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  686.                             strcpy(StandardName,&ZWSPName[0]);
  687.                             strcpy(GfxName,StandardName);
  688.                             strcat(GfxName,".IFF");
  689.                             strcpy(TextName,StandardName);
  690.                             }
  691.                         if((strncmp(&ZWSPName[0],"OUTPUT",6))==0){
  692.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  693.                             if((strncmp(&ZWSPName[0],"TEX",3))==0){
  694.                                 OutputType=1;
  695.                                 }
  696.                             if((strncmp(&ZWSPName[0],"ASCII",3))==0){
  697.                                 OutputType=0;
  698.                                 }
  699.                             }
  700.                         if((strncmp(&ZWSPName[0],"RANDOM",6))==0){
  701.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  702.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  703.                                 RandomDSValue=TRUE;
  704.                                 }
  705.                             }
  706.                         if((strncmp(&ZWSPName[0],"DATAFIELD",9))==0){
  707.                           fscanf(StatusFilePointer,"%s",&ZWSPName[0]);
  708.                             if((strncmp(&ZWSPName[0],"YES",3))==0){
  709.                                 SaveDatenfeld=TRUE;
  710.                                 }
  711.                             }
  712.                         }
  713.                     fclose(StatusFilePointer);
  714.                     AusgangsWichtigeDaten=AnzahlWichtigeDaten;
  715.                     if(AnzahlKnoten<5) DisplayErrorMessage("option -a, too few nodes");
  716.                     if(AnzahlKnoten>100) DisplayErrorMessage("option -a, too much nodes");
  717.                     if(AnzahlWichtigeDaten<0) DisplayErrorMessage("option -i, greater than 0");
  718.                     if(AnzahlWichtigeDaten>100) DisplayErrorMessage("option -i, smaller than 100");
  719.                     if(AnzahlWichtigeDaten>AnzahlKnoten) DisplayErrorMessage("option -i, not more than nodes (-a)");
  720.                     if(MaxSAN<1) DisplayErrorMessage("option -m, greater than 0");
  721.                     if(MaxSAN>20) DisplayErrorMessage("option -m, smaller than 20");
  722.                     if(Stufenwert<2) DisplayErrorMessage("option -r, greater than 2");
  723.                     if(Stufenwert>MaxFarben) DisplayErrorMessage("option -r, smaller than 5, or 7(if -g)");
  724.                     AusgangsKnoten=AnzahlKnoten;
  725.                     if(StatusFile==TRUE){
  726.                         strcpy(StatusName,StandardName);
  727.                         strcat(StatusName,".STAT");
  728.                         }
  729.                 }
  730.             else{
  731.                 printf("\n");
  732.                 printf("Prefs-File Has Errors! ... Using Standard-Prefs\n");
  733.                 printf("\n");
  734.                 fclose(StatusFilePointer);
  735.                 }
  736.             }
  737.         }
  738.     }
  739.  
  740. BOOL SaveIFF(char *OpenFileName){
  741.     ULONG zwsp[1];
  742.  
  743.     SaveNamePointer=Open(OpenFileName,MODE_NEWFILE);
  744.     if(!SaveNamePointer){
  745.         DisplayErrorMessage("Error : Save-Gfx(IFF)-Datei!");
  746.         }
  747.     else{
  748.         Write(SaveNamePointer,"FORM",4);
  749.         zwsp[0]=4;    /* ILBM */
  750.         zwsp[0]+=sizeof(BMHD)+8; /* BMHD */
  751.         zwsp[0]+=48; /* CMAP */
  752.         zwsp[0]+=8; /* CMAP-Header */
  753.         zwsp[0]+=12; /* CAMG */
  754.         zwsp[0]+=BMHD.Width*BMHD.Height*BMHD.nPlanes/8+8; /* BODY */
  755.         Write(SaveNamePointer,&zwsp[0],4);
  756.         Write(SaveNamePointer,"ILBM",4);
  757.         Write(SaveNamePointer,"BMHD",4);
  758.         BMHD.compression=0;
  759.         BMHD.masking=0;
  760.         zwsp[0]=sizeof(BMHD);
  761.         Write(SaveNamePointer,&zwsp[0],4);
  762.         Write(SaveNamePointer,&BMHD,sizeof(BMHD));
  763.         Write(SaveNamePointer,"CMAP",4);
  764.         zwsp[0]=48;
  765.         Write(SaveNamePointer,&zwsp[0],4);
  766.         Write(SaveNamePointer,&Colors[0],48);
  767.         Write(SaveNamePointer,"CAMG",4);
  768.         zwsp[0]=4;
  769.         Write(SaveNamePointer,&zwsp[0],4);
  770.         zwsp[0]=4;
  771.         Write(SaveNamePointer,&CAMG,4);
  772.         Write(SaveNamePointer,"BODY",4);
  773.         zwsp[0]=BMHD.Width*BMHD.Height*BMHD.nPlanes/8;
  774.         Write(SaveNamePointer,&zwsp[0],4);
  775.         for(yi=0;yi<BMHD.Height;yi++){
  776.             for(b=0;b<BMHD.nPlanes;b++){
  777.                 Write(SaveNamePointer,MyScreen->RastPort.BitMap->Planes[b]+yi*(BMHD.Width/8),BMHD.Width/8);
  778.                 }
  779.             }
  780.         }
  781.     return TRUE;
  782.     }
  783.  
  784. void SaveData(char *OpenFileName){
  785. ULONG zwsp[1];
  786. LONG StatNamePointer;
  787.  
  788.     StatNamePointer=Open(OpenFileName,MODE_NEWFILE);
  789.     if(!StatNamePointer){
  790.         DisplayErrorMessage("Error : Stat-Datas-Datei!");
  791.         }
  792.     else{
  793.         Write(StatNamePointer,"FORM",4);
  794.         zwsp[0]=20;    /* MTRX + DATA + STRT */
  795.         zwsp[0]+=sizeof(struct MatrixGenType); /* DATA */
  796.         zwsp[0]+=144*sizeof(struct MatrixKomponenten); /* DatenFeld */
  797.         Write(StatNamePointer,&zwsp[0],4);
  798.         Write(StatNamePointer,"MTGN",4);
  799.         Write(StatNamePointer,"DATA",4);
  800.         zwsp[0]=sizeof(struct MatrixGenType);
  801.         Write(StatNamePointer,&zwsp[0],4);
  802.         Write(StatNamePointer,&MatrixDatas[0],sizeof(struct MatrixGenType));
  803.         Write(StatNamePointer,"STRT",4);
  804.         zwsp[0]=144*sizeof(struct MatrixKomponenten);
  805.         Write(StatNamePointer,&zwsp[0],4);
  806.         Write(StatNamePointer,&Matrix[0],144*sizeof(struct MatrixKomponenten));
  807.         Close(StatNamePointer);
  808.         }
  809.     }
  810.  
  811. void LoadData(char *OpenFileName){
  812. ULONG zwsp[255];
  813. LONG StatNamePointer;
  814.  
  815.     StatNamePointer=Open(OpenFileName,MODE_OLDFILE);
  816.     if(!StatNamePointer){
  817.         DisplayErrorMessage("Error : Stat-Datas-Datei!");
  818.         }
  819.     else{
  820.         Read(StatNamePointer,&zwsp[0],8);
  821.         if(strncmp(&zwsp[0],"FORM",4)==0){
  822.             Read(StatNamePointer,&zwsp[0],12);
  823.             if(strncmp(&zwsp[0],"MTGNDATA",8)==0){
  824.                 Read(StatNamePointer,&MatrixDatas[0],sizeof(struct MatrixGenType));
  825.                 Read(StatNamePointer,&zwsp[0],8);
  826.                 if(strncmp(&zwsp[0],"STRT",4)==0){
  827.                     Read(StatNamePointer,&Matrix[0],144*sizeof(struct MatrixKomponenten));
  828.                     Close(StatNamePointer);
  829.                     if((MatrixDatas[0].Version!=MGVersion)||(MatrixDatas[0].Revision!=MGRevision)){
  830.                         DisplayErrorMessage("wrong version!");
  831.                         }
  832.                     }
  833.                 else{
  834.                     Close(StatNamePointer);
  835.                     DisplayErrorMessage("error in datafield-file");
  836.                     }
  837.                 }
  838.             else{
  839.                 Close(StatNamePointer);
  840.                 DisplayErrorMessage("error in datafield-file");
  841.                 }
  842.             }
  843.         else{
  844.             Close(StatNamePointer);
  845.             DisplayErrorMessage("error in datafield-file");
  846.             }
  847.         Read(StatNamePointer,&Matrix[0],144*sizeof(struct MatrixKomponenten));
  848.         }
  849.     }
  850.